<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>let-const</title>
</head>
<body>
  <script>
    /**
     * let、const关键字都具有块级作用域
     * let、const不能进行变量提升
     * let、const 同一作用域内不可以重复声明变量
     * let 可以重新赋值
     * const 不可以重新赋值
     */
    
    // 1. 块级作用域
    {
      let globalVal = '我可以在window拿到';
      console.log('globalVal', globalVal);
    }
    // globalVal is not defined
    // console.log('out.globalVal', globalVal);

    // 2. 是否可以进行变量提升
    // Cannot access 'price' before initialization
    console.log('变量提升', price1, price2);
    const price1 = 60;
    let price2 = 70;

    // 3. 重新声明变量
    // let name = 'cs1';
    //  Identifier 'name' has already been declared（同一作用域内）
    const name = 'cs2'
    {
      let name = 'cs3';
      console.log('name', name);
    }

    // 4. let 可以再次赋值
    let count = 10;
    count = 30;
    console.log('再次赋值', count);


    // 5. const 不能再次赋值
    const total = 20;
    total = 30;
    // Assignment to constant variable
    console.log('不能再次赋值', total);
  </script>
</body>
</html>